package Benutzerinteraktion;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MeineEingabe
{
	/**
	 * Erfasst einen Text ueber die Tastatur. 
	 * 
	 * @param info Der auf der Konsole ausgegebene Text.
	 * @return
	 */
	public static String erfasseText(String info){
		System.out.print(info);
		return erfasseText();
	}
	
	
  /** 
   * Erfasst einen Text ueber die Tastatur.
   *
   * @return Den erfassten Text. 
   */
  public static String erfasseText()
  {
    BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
    String text = "";
    try
    {
      text = eingabe.readLine();
    }
    catch (IOException ioe)
    {
      ioe.printStackTrace();
    }
    return text;
  }
  
  
  /**
   * Erfasst eine ganze Zahl ueber die Tastatur.
   *
   * @return Die erfasste ganze Zahl. 
   */  
  public static int erfasseInt()
  {
    String hinweis = "Bitte eine ganze Zahl eingeben:  ";
    int dieEingabe = 0;
    boolean eingabeOk = false;
    do
    {
      try
      {
        dieEingabe = Integer.parseInt(erfasseText());
        eingabeOk = true;
      }
      catch (NumberFormatException nfe)
      {
        System.out.print(hinweis);
      }
    } while (!eingabeOk);
    return dieEingabe;
  }
  
  
  /**
   * Erfasst eine ganze Zahl ueber die Tastatur, die groesser oder gleich 
   * <code>min</code> und kleiner oder gleich <code>max</code> sein muss.
   *
   * @param min Die kleinste zulaessige Eingabe.
   * @param max Die groesste zulaessige Eingabe.
   * @return Die erfasste ganze Zahl. 
   */  
  public static int erfasseInt(int min, int max)
  {
    String hinweis = "Bitte eine ganze Zahl aus dem Bereich von " +
                     min + " bis " + max + " eingeben:  ";
    int dieEingabe;
    boolean eingabeOk = false;
    do
    {
      dieEingabe = erfasseInt();
      eingabeOk = (min <= dieEingabe) && (dieEingabe <= max);
      if (!eingabeOk)
        System.out.print(hinweis);
    } while (!eingabeOk);
    return dieEingabe;
  }
  
  
 /**
  * Gibt auf der Konsole einen Text aus und erfasst dann eine ganze Zahl 
  * ueber die Tastatur, die groesser oder gleich <code>min</code> und kleiner 
  * oder gleich <code>max</code> sein muss.
  *
  * @param info Der auf der Konsole ausgegebene Text.
  * @param min Die kleinste zulaessige Eingabe.
  * @param max Die groesste zulaessige Eingabe.
  * @return Die erfasste ganze Zahl. 
  */    
  public static int erfasseInt(String info, int min, int max)
  {
    System.out.print(info);
    return erfasseInt(min, max);
  }
}

